/**
 * 
 */
package com.thx.privilege;

import java.util.List;

/**
 * @author balance
 * 
 */
public interface PriviManager {

	/**
	 * 给User 追加一个权限
	 * user原有的权限保留
	 * @param userId 
	 * @param objId 
	 * @param priviType
	 */
	public void appendPriviToUser(String userId, String objId, String priviType);

	/**
	 * 给User 追加多个权限
	 * user原有的权限保留
	 * @param userId 
	 * @param objId 
	 * @param priviType
	 */
	public void appendPriviToUser(String userId, String[] objId, String priviType);

	/**
	 * 给Role 追加一个权限
	 * Role原有的权限保留 
	 * @param roleId
	 * @param objId
	 * @param priviType
	 */
	public void appendPriviToRole(String roleId, String objId, String priviType);

	/**
	 * 给Role 追加多个权限
	 * Role原有的权限保留  
	 * @param roleId
	 * @param objId
	 * @param priviType
	 */
	public void appendPriviToRole(String roleId, String[] objId, String priviType);

	/**
	 * 给User 重新授权
	 * user原有权限全部清空
	 * @param userId
	 * @param objId
	 * @param priviType
	 */
	public void reAuthToUser(String userId, String objId, String priviType);

	/**
	 * 给User 重新授权
	 * user原有权限全部清空
	 * @param userId
	 * @param objId
	 * @param priviType
	 */
	public void reAuthToUser(String userId, String[] objId, String priviType);

	/**
	 * 给Role 重新授权
	 * role原有权限全部清空
	 * @param roleId
	 * @param objId
	 * @param priviType
	 */
	public void reAuthToRole(String roleId, String objId, String priviType);

	/**
	 * 给Role 重新授权
	 * role原有权限全部清空
	 * @param roleId
	 * @param objId
	 * @param priviType
	 */
	public void reAuthToRole(String roleId, String[] objId, String priviType);

	/**
	 * 获取User的权限
	 * @param userId
	 * @param priviType
	 * @return
	 */
	public List<PriviObj> getUserPrivileges(String userId, String priviType);

	/**
	 * 获取Role的权限
	 * @param roleId
	 * @param priviType
	 * @return
	 */
	public List<PriviObj> getRolePrivileges(String roleId, String priviType);

	/**
	 * User是否拥有该权限
	 * @param userId
	 * @param objId
	 * @param priviType
	 * @return
	 */
	public boolean hasUserPrivi(String userId, String objId, String priviType);

	/**
	 * Role是否拥有该权限
	 * @param roleId
	 * @param objId
	 * @param priviType
	 * @return
	 */
	public boolean hasRolePrivi(String roleId, String objId, String priviType);

	/**
	 * 删除type类型的objId资源的user授权信息
	 * @param objId
	 * @param type
	 */
	public void delPriUser(String objId, String type);

	/**
	 * 删除type类型的objId资源的role授权信息
	 * @param objId
	 * @param type
	 */
	public void delPriRole(String objId, String type);

}
